home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1990: Discy Business / Discy Business.2mg / DEV.CD / GUIDED.TOURS / IIC.PLUS.TOUR / APPLE.PLAY / APPLE.21 (.txt) next >
Encoding:
Applesoft BASIC Source Code  |  1988-04-13  |  6.8 KB  |  166 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 10  ONERR  GOTO 1640
  2. 20  PRINT  CHR$(4)"BLOADCM.OBJ,A$2BC0": PRINT  CHR$(4)"BLOADCARDCHARS,A$3200": PRINT  CHR$(4)"BLOADSMD.OBJ,A$2E00": PRINT  CHR$(4)"BLOADSMD.JMP,A$330": DEF  FN MD(A) =  INT((A/M - INT(A/M)) *M +.05) * SGN(A/M): DIM D%(52),DT%(4),CH%(4),U%(4),H%(144),IP%(4)
  3. 30 H2 = 823:BY = 846:IN = 931:NM = 935:HM = 897:SC = 903:ES = 873:DS = 869:DW = 11200:SP = 772
  4. 40  TEXT : CALL H2: DATA  0,1,1,2,3,4,5,6,10,14,18,22,27,31: RESTORE : FOR I = 0 TO 13: READ D%(I): NEXT I: FOR I = 0 TO 6:SA = 15104 +32 *D%(I) +256 * INT(D%(I)/4): POKE 32,D%(I +7) -1: POKE 33,3: POKE 34,2: HOME :M = 256: POKE SP, FN MD(SA): POKE SP +1, INT(SA/M): PRINT "<CTRL-0x12>012@ABPQR3CS";: NEXT I: POKE 32,0: POKE 33,40: POKE 34,0: POKE SP,0: POKE SP +1,49
  5. 50  VTAB 3: HTAB 26: PRINT "<CTRL-0x13>@";: HTAB 34: PRINT "^": VTAB 9: HTAB 19:C = 39: GOSUB 410: VTAB 12: HTAB 17:C = 37: GOSUB 410: CALL NM: VTAB 20: HTAB 6: PRINT "...<CTRL-0x13>OLD <CTRL-0x12>L<CTRL-0x13>AS <CTRL-0x12>V<CTRL-0x13>EGAS <CTRL-0x12>B<CTRL-0x13>LACKJACK...<CTRL-0x12>": VTAB 10: HTAB 3: PRINT "<CTRL-0x13>CREATED BY": PRINT : HTAB 3: PRINT "<CTRL-0x12>B<CTRL-0x13>ILL <CTRL-0x12>D<CTRL-0x13>EPEW": VTAB 14: HTAB 26: PRINT "<CTRL-0x12>C<CTRL-0x13>OPYRIGHT (<CTRL-0x12>C)": PRINT : HTAB 24: PRINT "1980 ARTSCI, I<CTRL-0x13>NC<CTRL-0x12>."
  6. 60  POKE 34,23: CALL HM: PRINT "# OF PLAYERS (0 TO 3, <ESC> TO QUIT)?";: GET A$: ON A$ =  CHR$(27) GOTO 1630:P =  VAL(A$): PRINT P: IF P <0  OR P >3  THEN 60
  7. 65  IF A$ =  CHR$(13)  THEN 60
  8. 70 P =  INT(P): IF   NOT P  THEN 1630
  9. 80  FOR X = 1 TO P:CH%(X) = 0:DT%(X) = 0: NEXT X
  10. 90  CALL HM: INPUT "$1, $2 OR $5 TABLE ?";I: IF I < >1  AND I < >2  AND I < >5  THEN 90
  11. 100 MX = 100 *I:MN = I: PRINT "<CTRL-0x12>T<CTRL-0x13>ABLE MINIMUM IS $";MN;" AND LIMIT IS $";MX;: GOSUB 1330: GOSUB 1330:NS = 2:TP = 52: GOSUB 1610: GOTO 1030
  12. 110 PT = 53:LP = 52: FOR X = 0 TO 51:D%(X +1) = X: NEXT X:S = 0:TP = LP: GOSUB 120:NS = 0: GOTO 140
  13. 120  GOSUB 1580: IF PT = 53  THEN  PRINT "<CTRL-0x12>N<CTRL-0x13>EW DECK...";
  14. 130  CALL IN: PRINT "SHUFFLING";: CALL NM:M = LP: FOR T = 0 TO (13 *4) -1: GOSUB 1560:I = D%( FN MD(T) +1):R =  INT( RND(1) *M) +1:D%( FN MD(T) +1) = D%(R):D%(R) = I: NEXT T:PT = 1: RETURN 
  15. 140  FOR X = 1 TO 144:H%(X) =  -1: NEXT X:S = 0:BJ = 0:LP = PT -1: POKE  -16368,0: FOR X = 1 TO P: GOSUB 1580: IF CH%(X) = 0  THEN  GOSUB 1360
  16. 150  GOSUB 1580: PRINT "<CTRL-0x12>Y<CTRL-0x13>OUR WAGER #";X;"  (0 TO <CTRL-0x12>QUIT<CTRL-0x13>) ";: INPUT I: GOSUB 1580: IF I < >0  THEN 190
  17. 160  INPUT "<CTRL-0x12>D<CTRL-0x13>O YOU WANT TO PLAY ?";A$: IF A$ = ""  THEN A$ = "Y"
  18. 170  IF  LEFT$(A$,1) = "N"  OR  LEFT$(A$,1) = "n"  THEN  GOSUB 1420
  19. 180  GOTO 150
  20. 190  IF I < = MX  THEN 210
  21. 200  GOSUB 1580: PRINT "<CTRL-0x12>T<CTRL-0x13>ABLE LIMIT IS $<CTRL-0x07>";MX;: GOSUB 1330: GOSUB 1580: GOTO 230
  22. 210  IF I > = MN  THEN 260
  23. 220  GOSUB 1580: PRINT "<CTRL-0x12>M<CTRL-0x13>INIMUM BET IS $<CTRL-0x07>";MN;: GOSUB 1330: GOSUB 1580: GOTO 230
  24. 230  GOSUB 1580: INPUT "<CTRL-0x12>W<CTRL-0x13>ANT TO CHANGE TABLES ?";A$: IF A$ = ""  THEN A$ = "N"
  25. 240  IF  LEFT$(A$,1) = "Y"  OR  LEFT$(A$,1) = "y"  THEN 90
  26. 250  GOTO 150
  27. 260  IF I < = CH%(X)  THEN 280
  28. 270  PRINT "<CTRL-0x12>Y<CTRL-0x13>OU'RE OUT OF YOUR LEAGUE!!<CTRL-0x07>";: GOSUB 1330: GOTO 150
  29. 280 H%(32 *(P +1) +S *(P +1) +X) = I: GOSUB 1590: PRINT "#";X;" WAGERS $";I;: NEXT X: GOSUB 1590: PRINT "<CTRL-0x12>D<CTRL-0x13>EALER";:PS = 0:UP = 1:S = 0
  30. 290  FOR X = 1 TO P: GOSUB 1600: GOSUB 340: NEXT X:X = P +1: GOSUB 1600:UP = PS: GOSUB 340: IF PS < >0  THEN 310
  31. 300 PS = 1:UP = PS: GOTO 290
  32. 310  GOSUB 1580:M = 13:Y =  FN MD(C) +1: IF Y = 1  THEN 1120
  33. 320  IF Y >9  THEN 1280
  34. 330  GOTO 430
  35. 340  IF PT <TP  THEN 360
  36. 350  GOSUB 1500
  37. 360 C = D%(PT):PT = PT +1:H%(PS *(P +1) *4 +S *(P +1) +X) = C: IF RT  THEN  RETURN 
  38. 370  GOSUB 1600: IF UP = 1  THEN 390
  39. 380  GOSUB 400: RETURN 
  40. 390  GOSUB 410: RETURN 
  41. 400  CALL NM: PRINT "<CTRL-0x12>";: POKE 6,13: CALL DW: GOTO 420
  42. 410  CALL NM: PRINT "<CTRL-0x12>";:M = 13:RK =  FN MD(C):SU =  INT(C/13): POKE 6,RK: POKE 7,SU: CALL DW
  43. 420  GOSUB 1560: CALL IN: RETURN 
  44. 430  FOR X = 1 TO P: GOSUB 580:S = 0:U(1) = 0:U(2) = 0:U(3) = 0:U(4) = 0: IF CN < >21  THEN 450
  45. 440  GOSUB 1320: GOTO 550
  46. 450  GOSUB 1590: CALL NM: GOSUB 1550
  47. 460  GOSUB 1580: IF PS <2  THEN 490
  48. 470  PRINT "1-<CTRL-0x12>H<CTRL-0x13>IT 2-<CTRL-0x12>S<CTRL-0x13>TAND ";: INPUT I: IF I <1  OR I >2  THEN 460
  49. 480  GOTO 500
  50. 490  GOSUB 1580: PRINT "1-<CTRL-0x12>H<CTRL-0x13>IT 2-<CTRL-0x12>S<CTRL-0x13>TAND 3-<CTRL-0x12>D<CTRL-0x13>OUBLE 4-<CTRL-0x12>S<CTRL-0x13>PLIT ";: INPUT I: IF I <1  OR I >4  THEN 490
  51. 500  GOSUB 1590: CALL IN: GOSUB 1550: ON I GOTO 510,520,530,540
  52. 510  GOSUB 650: GOTO 450
  53. 520  GOTO 670
  54. 530  GOTO 680
  55. 540  GOSUB 720: GOTO 450
  56. 550  IF S = 0  THEN 570
  57. 560  GOSUB 1530: GOSUB 780: GOTO 450
  58. 570  NEXT X: GOTO 840
  59. 580 CN = 0:AC = 0: FOR Y = 0 TO 7:M = 13:VL =  FN MD(H%(Y *4 *(P +1) +S *(P +1) +X)) +1: IF VL >10  THEN VL = 10
  60. 590  IF VL <0  THEN VL = 0
  61. 600  IF VL = 1  THEN AC = AC +1
  62. 610 CN = CN +VL: IF CN = 0  THEN Y = 7
  63. 620  NEXT Y: IF AC = 0  THEN  RETURN 
  64. 630  IF CN <12  THEN CN = CN +10
  65. 640  RETURN 
  66. 650 PS = PS +1:UP = 1: GOSUB 1600: GOSUB 340: GOSUB 580: IF X < >(P +1)  AND CN >21  THEN 1340
  67. 660  RETURN 
  68. 670 UP = 1:PS = 1:U(S +1) = 1: GOTO 550
  69. 680  GOSUB 810: IF NG = 0  THEN 700
  70. 690  GOSUB 1590: PRINT "<CTRL-0x12>Y<CTRL-0x13>OU'RE BROKE!!<CTRL-0x07>";: GOSUB 1330: GOTO 450
  71. 700 I = 32 *(P +1) +S *(P +1) +X:H%(I) = 2 *H%(I):PS = 2:UP = 0: GOSUB 1600: GOSUB 340: GOSUB 580: IF CN <22  THEN 670
  72. 710  GOSUB 1340
  73. 720 Y = H%(4 *(P +1) +S *(P +1) +X):M = 13: IF  FN MD(H%(S *(P +1) +X)) =  FN MD(Y)  THEN 740
  74. 730  POP : GOSUB 1590: PRINT "<CTRL-0x12>N<CTRL-0x13>O PAIR!!<CTRL-0x07>";: GOSUB 1330: GOTO 450
  75. 740  GOSUB 810: IF   NOT NG  THEN 760
  76. 750  POP : GOSUB 1590: PRINT "<CTRL-0x12>N<CTRL-0x13>O DOUGH JOE!!<CTRL-0x07>";: GOSUB 1330: GOTO 450
  77. 760 Y = H%(4 *(P +1) +S *(P +1) +X): GOSUB 1510:H%(S *(P +1) +X) = Y:PS = 4:RT = 1: GOSUB 1600:C = Y: GOSUB 410:PS = 1: GOSUB 340:PS = 5: GOSUB 1600: GOSUB 410:H%(32 *(P +1) +S *(P +1) +X) = H%(32 *(P +1) +X): GOSUB 1530:PS = 1:RT = 0: GOSUB 1600: GOSUB 340: GOSUB 1580: PRINT "<CTRL-0x12>L<CTRL-0x13>ET'S PLAY THE RIGHT SIDE FIRST!";: GOSUB 1330
  78. 770  GOSUB 1330: GOSUB 1580: GOSUB 1590: PRINT "..<CTRL-0x12>G<CTRL-0x13>OOD LUCK..";: GOSUB 1330: GOSUB 1580: GOSUB 1510
  79. 780  GOSUB 1620: FOR PS = 0 TO 5: GOSUB 1600: IF PS >1  THEN 800
  80. 790 C = H%(PS *4 *(P +1) +S *(P +1) +X): GOSUB 410: NEXT PS
  81. 800  NEXT PS:PS = 1: RETURN 
  82. 810 NG = 0:CN = 0: FOR Y = 0 TO 3:I = H%(32 *(P +1) +Y *(P +1) +X): IF  SGN(I +1)  THEN CN = CN +I
  83. 820  NEXT Y:CN = CN +H%(32 *(P +1) +X): IF  SGN(CH%(X) -CN) < > -1  THEN  RETURN 
  84. 830 NG = 1: RETURN 
  85. 840 X = P +1:PS = 0:C = H%(X): GOSUB 1600: GOSUB 410:PS = 1:C = H%(5 *X): GOSUB 1600: GOSUB 410:HD = 0: FOR X = 1 TO P: FOR S = 0 TO 3: GOSUB 580:HD = HD +CN: NEXT S,X:X = P +1:S = 0: IF HD = 0  THEN 910
  86. 850  GOSUB 580: IF CN >16  THEN 870
  87. 860  GOSUB 650: GOTO 850
  88. 870 DL = CN: GOSUB 1590: IF CN <22  THEN 890
  89. 880 DL = 0: PRINT CN;" <CTRL-0x12>BUSTS DEALER<CTRL-0x13>";: GOTO 920
  90. 890  IF CN = 21  THEN 910
  91. 900  PRINT "<CTRL-0x12>DEALER PAYS <CTRL-0x13>";CN +1;: GOTO 920
  92. 910  GOSUB 580: GOSUB 1590: PRINT "<CTRL-0x12>DEALER HOLDS <CTRL-0x13>";CNT;
  93. 920  FOR X = 1 TO P: FOR S = 3 TO 0  STEP  -1: GOSUB 580: IF CN = 0  THEN 1010
  94. 930  IF S < >0  THEN  GOSUB 1620
  95. 940  FOR Y = 0 TO 7:C = H%(Y *4 *(P +1) +S *(P +1) +X):PS = Y: GOSUB 1600: IF C < > -1  THEN  GOSUB 410
  96. 950  NEXT Y:I = 32 *(P +1) +S *(P +1) +X: GOSUB 1590: IF CN >21  OR CN < = DL  THEN 970
  97. 960 CH%(X) = CH%(X) +H%(I): PRINT ;CN;" <CTRL-0x12>WINS $<CTRL-0x13>";H%(I);: GOSUB 1330: GOTO 1000
  98. 970  IF CN = DL  THEN 990
  99. 980 CH%(X) = CH%(X) -H%(I): PRINT CN;" <CTRL-0x12>LOSES $<CTRL-0x13>";H%(I);: GOSUB 1330: GOTO 1000
  100. 990  PRINT CN;" <CTRL-0x12>PUSHES<CTRL-0x13>";: GOSUB 1330
  101. 1000  GOSUB 1620
  102. 1010  NEXT S,X: GOSUB 1330
  103. 1020 X = P +1: GOSUB 1620
  104. 1030  FOR X = 1 TO P +1: GOSUB 1590: IF X < >P +1  THEN 1050
  105. 1040  PRINT "<CTRL-0x12>D<CTRL-0x13>EALER";: GOTO 1060
  106. 1050  PRINT "#";X;" HAS $";CH%(X);
  107. 1060  NEXT X: IF P = 3  THEN 1100
  108. 1070  GOSUB 1580: PRINT "<CTRL-0x12>P<CTRL-0x13>RESS '<CTRL-0x12>A<CTRL-0x13>' TO ADD A NEW PLAYER";: FOR T = 1 TO 250: IF  PEEK( -16384) = 193  OR  PEEK( -16384) = 225  THEN 1090
  109. 1080  NEXT T: GOTO 1100
  110. 1090  POKE  -16368,0:P = P +1:CH%(P) = 0:DT%(P) = 0:T = 500: NEXT T: GOTO 1020
  111. 1100  GOSUB 1580: IF NS < >2  AND TP >(P +1) *6  THEN 140
  112. 1110  GOTO 110
  113. 1120 BJ = 0: GOSUB 1580: PRINT "<CTRL-0x12>I<CTRL-0x13>NSURANCE BETS (50%) PAY 2 TO 1";: GOSUB 580: IF CN = 21  THEN BJ = 1
  114. 1130  FOR X = 1 TO P:IP%(X) = 0: GOSUB 1590: GOSUB 1260: INPUT "<CTRL-0x12>I<CTRL-0x13>NSURANCE ?";A$: IF A$ = ""  THEN A$ = "N"
  115. 1140  IF  LEFT$(A$,1) < >"Y"  AND  LEFT$(A$,1) < >"y"  THEN  GOSUB 1590: GOTO 1180
  116. 1150 IP%(X) =  INT(H%(32 *(P +1) +X)/2): GOSUB 1590: PRINT "$ <CTRL-0x12>INSURED $<CTRL-0x13>";: IF BJ  THEN 1170
  117. 1160 CH%(X) = CH%(X) -IP%(X): GOTO 1180
  118. 1170 CH%(X) = CH%(X) +IP%(X) *2
  119. 1180  NEXT X: IF   NOT BJ  THEN 1200
  120. 1190 PS = 0:C = H%(X): GOSUB 1600: GOSUB 410: GOTO 1300
  121. 1200  FOR X = 1 TO P: IF IP%(X) = 0  THEN 1240
  122. 1210  GOSUB 1590: IF BJ  THEN 1230
  123. 1220  PRINT "<CTRL-0x12>INSR LOSES $<CTRL-0x13>";IP%(X);: GOTO 1240
  124. 1230  PRINT "<CTRL-0x12>INSR WINS $<CTRL-0x13>";IP%(X) *2;
  125. 1240  NEXT X: GOSUB 1330: GOSUB 1330: FOR X = 1 TO P: GOSUB 1590:S = 0: GOSUB 1550: NEXT X: IF BJ  THEN 920
  126. 1250  GOTO 430
  127. 1260 I = H%(32 *(P +1) +X): IF  SGN(CH%(X) -I - INT(I/2)) < > -1  THEN  RETURN 
  128. 1270  POP : PRINT "<CTRL-0x12>NO CASH NO INSR<CTRL-0x13>";: GOSUB 1330: GOTO 1180
  129. 1280  GOSUB 580: IF CN < >21  THEN 430
  130. 1290  GOTO 1190
  131. 1300  GOSUB 1590: PRINT "<CTRL-0x12><< BLACKJACK >><CTRL-0x13><CTRL-0x07><CTRL-0x07>";:DL = CN: IF BJ  THEN 1200
  132. 1310  GOTO 920
  133. 1320  GOSUB 1590: PRINT "<CTRL-0x12><< BLACKJACK >><CTRL-0x13><CTRL-0x07><CTRL-0x07>";: GOSUB 1330:T = 32 *(P +1) +X:CH%(X) = CH%(X) +H%(T) + INT((H%(T) +1)/2): FOR Y = 0 TO 7:H%(Y *4 *(P +1) +X) =  -1: NEXT Y: GOSUB 1590: PRINT "21 <CTRL-0x12>WINS $<CTRL-0x13>";H%(T) + INT((H%(T) +1)/2);: GOSUB 1330: GOSUB 1620: RETURN 
  134. 1330  FOR T = 1 TO 500: NEXT T: RETURN 
  135. 1340 I = 32 *(P +1) +S *(P +1) +X:CH%(X) = CH%(X) -H%(I): IF UP = 0  THEN  GOSUB 410
  136. 1350  GOSUB 1590: PRINT CN;" <CTRL-0x12>LOSES $<CTRL-0x13>";H%(I);: FOR Y = 0 TO 8:H%(Y *4 *(P +1) +S *(P +1) +X) =  -1: NEXT Y: POP : GOSUB 1330: GOSUB 1620: GOTO 670
  137. 1360  GOSUB 1580: PRINT "<CTRL-0x12>Y<CTRL-0x13>OU'RE TAPPED #";X;"...NEED A LOAN ";: INPUT A$: IF A$ = ""  THEN A$ = "Y"
  138. 1370  GOSUB 1580: IF  LEFT$(A$,1) = "N"  OR  LEFT$(A$,1) = "n"  THEN 1420
  139. 1380  INPUT "<CTRL-0x12>H<CTRL-0x13>OW MUCH (1 TO 1000) ?";I:I =  INT(I): IF I <1  OR I >1000  THEN 1370
  140. 1390  GOSUB 1580: IF DT%(X) +I <10001  THEN 1410
  141. 1400  PRINT "<CTRL-0x12>S<CTRL-0x13>ORRY, THE CREDIT LIMIT IS $10,000<CTRL-0x07>";: GOSUB 1330: GOSUB 1580: PRINT "<CTRL-0x12>Y<CTRL-0x13>OU OWE ME ";DT%(X);: GOSUB 1330: GOTO 1360
  142. 1410 DT%(X) = DT%(X) +I: GOSUB 1590:CH%(X) = CH%(X) +I: PRINT "#";X;" HAS $";CH%(X);: GOSUB 1580: RETURN 
  143. 1420  GOSUB 1580:DT%(X) = DT%(X) -CH%(X): IF  SGN(DT%(X)) < >0  THEN 1440
  144. 1430  PRINT "<CTRL-0x12>W<CTRL-0x13>E'RE EVEN...";: GOTO 1470
  145. 1440  IF  SGN(DT%(X)) <0  THEN 1460
  146. 1450  PRINT "<CTRL-0x12>Y<CTRL-0x13>OU'RE DOWN $";DT%(X);"...";: GOTO 1470
  147. 1460  PRINT "<CTRL-0x12>Y<CTRL-0x13>OU'VE WON $"; ABS(DT%(X));"!...";
  148. 1470  PRINT "<CTRL-0x12>GOODBYE<CTRL-0x13>...";: GOSUB 1330: GOSUB 1330: GOSUB 1580: IF P < >1  THEN 1490
  149. 1480  POP : GOTO 40
  150. 1490  PRINT "<CTRL-0x12>E<CTRL-0x13>VERYONE SLIDE DOWN ONE!";: GOSUB 1330: GOSUB 1610: FOR I = X TO P:CH%(I) = CH%(I +1):DT%(I) = DT%(I +1): NEXT I:P = P -1: POP : GOTO 1030
  151. 1500  GOSUB 120:NS = NS +1:TP = LP: GOSUB 1580: RETURN 
  152. 1510 S = S +1: IF U(S +1) = 1  THEN 1510
  153. 1520  RETURN 
  154. 1530 S = S -1: IF U(S +1) = 1  THEN 1530
  155. 1540  RETURN 
  156. 1550  PRINT "#";X;" WAGERS $";H%(32 *(P +1) +S *(P +1) +X);: RETURN 
  157. 1560  GOSUB 1570: GOSUB 1570: RETURN 
  158. 1570  POKE  -16336, PEEK( -16336): RETURN 
  159. 1580  POKE 32,1: POKE 33,38: POKE 34,23: POKE 35,24: POKE 789,7: CALL HM: CALL IN: PRINT " ";: RETURN 
  160. 1590  POKE 789,7:M = 2: POKE 32, FN MD(X -1) *20 +1: POKE 33,18: POKE 34, INT((X -1)/2) *11 +1: POKE 35, PEEK(34) +1: CALL HM: POKE 789,0: CALL IN: PRINT " ";: RETURN 
  161. 1600 M = 2:Z =  FN MD(X -1) *20:M = 6: HTAB Z + FN MD(PS) *2 +3: VTAB  INT((X -1)/2) *11 +4 + INT(PS/6) *3: RETURN 
  162. 1610  POKE 32,0: POKE 33,40: POKE 34,1: POKE 35,24: POKE 789,1: CALL HM: RETURN 
  163. 1620 M = 2: POKE 33,18: POKE 32, FN MD(X -1) *20 +1: POKE 34, INT((X -1)/2) *11 +2: POKE 35, PEEK(34) +10: POKE 789,1: FOR I = 0 TO 9: CALL SC: NEXT I: RETURN 
  164. 1630  TEXT : HOME : PRINT : PRINT  CHR$(4);"-/TUTOR/BASIC.SYSTEM"
  165. 1640  IF  PEEK(222) = 255  THEN 1630
  166. 1650  RESUME